(define (stack)
    `stack
)

(define (empty-stack)
    (lambda ()
        `()
    )
)


(define (push stack element)
    (lambda ()
        (cons element (stack))
    )
)


(define (pop stack)
    (lambda ()
        (cdr (stack))
    )
)


(define (top stack)
    (lambda ()
        (car (stack))
    )
)


(define (empty-stack? stack)
    (eqv? (stack) `())
)
